package cn.juque.datapipeline.vo.taskinfo;

import cn.juque.datapipeline.vo.BaseVO;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.List;

/**
 * @author JUQUE
 * @version 1.0.0
 * <ul>
 *  <li>simple-generator</li>
 *  <li>任务信息</li>
 * </ul>
 * @date 2023-03-31 14:27:04
 **/
@Data
public class TaskInfoUpdateVO extends BaseVO {

    /**
     * 主键
     */
    @NotEmpty(message = "主键不能为空")
    @Size(message = "主键不能超过{max}个字符", max = 32)
    private String id;

    /**
     * 任务名称
     */
    @NotEmpty(message = "任务名称不能为空")
    @Size(message = "任务名称不能超过{max}个字符", max = 50)
    private String taskName;

    /**
     * 任务类型：1-预检；2-采数
     */
    @NotNull(message = "任务类型：1-预检；2-采数不能为空")
    @Range(min = 0, max = 99, message = "任务类型：1-预检；2-采数必须在{min}-{max}之间")
    private Integer taskType;

    /**
     * 源库
     */
    @NotEmpty(message = "源库不能为空")
    @Size(message = "源库不能超过{max}个字符", max = 32)
    private String sourceDatabase;

    /**
     * 脚本
     */
    @NotEmpty(message = "脚本不能为空")
    @Size(message = "脚本不能超过{max}个字符", max = 32)
    private String scriptId;

    /**
     * 单次数据偏移
     */
    @NotNull(message = "查询分页数不能为空")
    @Range(min = 1, max = 100000, message = "查询分页数必须在{min}-{max}之间")
    private Integer dataOffset;

    /**
     * 目标库
     */
    @NotEmpty(message = "目标库不能为空")
    @Size(message = "目标库不能超过{max}个字符", max = 32)
    private String targetDatabase;

    /**
     * 目标表
     */
    @NotEmpty(message = "目标表不能为空")
    @Size(message = "目标表不能超过{max}个字符", max = 100)
    private String targetTable;

    /**
     * 目标库操作类型
     */
    @NotNull(message = "目标库操作类型不能为空")
    @Range(min = 0, max = 99, message = "目标库操作类型必须在{min}-{max}之间")
    private Integer targetOperateType;

    /**
     * 执行前是否清数
     */
    @NotNull(message = "执行前是否清数不能为空")
    @Range(min = 0, max = 9, message = "执行前是否清数必须在{min}-{max}之间")
    private Integer clearByBefore;

    /**
     * 备注
     */
    @Size(message = "备注不能超过{max}个字符", max = 500)
    private String remark;

    /**
     * 字段映射
     */
    private List<FieldUpdateVO> fieldList;

}
